코딩테스트 연습 - 두 수의 곱 구하기 | 프로그래머스 스쿨
[ 템플릿 코드 ]
#include <string>
#include <vector>
using namespace std;
int solution(int num1, int num2) {
int answer = 0;
return answer;
}[ 풀이 ]
#include <string>
#include <vector>
using namespace std;
int solution(int num1, int num2)
{
int answer = num1 * 1000 / num2;
return answer;
}[ 해설 ]
#include <iostream> // 표준 입출력을 위한 헤더 파일 포함
using namespace std; // std:: 네임스페이스 생략 설정
// 두 수를 나눈 값에 1000을 곱한 정수 값을 구하는 함수
int solution(int num1, int num2) {
// 계산 순서가 매우 중요합니다! (왼쪽에서 오른쪽으로 진행)
// 1. 먼저 num1에 1000을 곱해서 숫자의 덩치를 크게 키웁니다 (예: 3 -> 3000)
// 2. 덩치가 커진 상태(3000)에서 num2(2)로 나누어 소수점이 생기는 것을 원천 차단합니다.
// 3. 계산된 정수 결과값(1500)을 answer 변수에 안전하게 저장합니다.
int answer = num1 * 1000 / num2;
// 최종 정답을 호출한 곳으로 반환합니다.
return answer;
}[ 타 답안 ]
#include <iostream> // 표준 입출력 기능을 사용하기 위한 헤더 파일
using namespace std; // std:: 네임스페이스 생략 설정
// 최종 결과물은 소수점이 없는 정수(int)로 반환하는 함수
int solution(int num1, int num2) {
// 1. double(num1) 과 double(num2)를 통해 각각 정수를 실수로 일시 변환합니다. (예: 3.0 / 2.0)
// 2. 실수끼리 나누었기 때문에 소수점이 살아있는 정확한 값이 나옵니다. (3.0 / 2.0 = 1.5)
// 3. 거기에 1000을 곱해 완벽한 실수 값을 만듭니다. (1.5 * 1000 = 1500.0)
// 4. 하지만 함수의 반환형이 int이므로, return하면서 1500.0의 .0이 떨어져 나가고 정수 1500이 반환됩니다.
return double(num1) / double(num2) * 1000;
}